<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="./templates/templateMenu.xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:h="http://java.sun.com/jsf/html">

    <ui:define name="content">
        <script type="text/javascript"> 
            function confirmFunction(opcion) {
                switch(opcion){
                    case 0: updateConfirmCompromisos.jq.click();
                        break;
                    case 1: updateConfirmModificarMatricula.jq.click();
                        break;
                    case 2: updateConfirmMatricula.jq.click();
                        break;
                    case 3: updateConfirmPagos.jq.click();
                        break;
                                            case 4: updateConfirmGuardar.jq.click();
                        break;
                }
            }
        </script>
        <p:panel header="Matricula de Alumnos">
            <!--p:layout style="min-width: 1024px; width: 1024px; min-height:500px; height:500px; margin: 0 auto;"-->         
            <!--p:layoutUnit position="left" collapsed="true" scrollable="true" collapsible="true" width="200" height="500" header="Guia de ayuda"-->
            <!--ui:include src="guiaMatricula.xhtml"/--> <!-- Funciona como un Frame -->
            <!--/p:layoutUnit-->
            <!--p:layoutUnit position="center" header="Matricula de Alumnos"-->
            <p:fieldset legend="Datos del Responsable" >
                <p:fieldset>
                    <h:panelGrid id="buscarResponsable" columns="3" >
                        <h:outputText value="Buscar:"/>
                        <p:autoComplete id="txtNombre" 
                                        value="#{matriculaBean.buscarResponsable}" 
                                        selectListener="#{matriculaBean.onSelectNomPadre}"
                                        onSelectUpdate="frmResponsable"
                                        completeMethod="#{autoCompleteBean.completeNombre}">
                            <f:attribute name="field" value="Ambos"/>
                        </p:autoComplete>
                        <p:commandButton id="cmdLimpiar" 
                                         value="Limpiar" 
                                         image="ui-icon ui-icon-arrowrefresh-1-w"
                                         process="@this frmResponsable" 
                                         action="#{matriculaBean.limpiarFrmResponsable}"
                                         update="frmResponsable buscarResponsable"/>
                    </h:panelGrid>
                </p:fieldset>
                <h:panelGrid id="frmResponsable" columnClasses="alignTop,alignTop" columns="2">
                    <h:panelGrid columns="3">
                        <h:outputText value="Nombres:" />
                        <p:inputText id="txtNomResponsable"
                                     value="#{matriculaBean.responsable.vcNombres}"
                                     required="#{param['requireGroup1']=='1'}"/>
                        <p:message for="txtNomResponsable" display="icon"/>
                        <h:outputText value="Apellidos:" />
                        <p:inputText id="txtApelResponsable"
                                     value="#{matriculaBean.responsable.vcApellidos}"
                                     required="#{param['requireGroup1']=='1'}"/>
                        <p:message for="txtApelResponsable" display="icon"/>
                        <h:outputText value="DUI:" />
                        <p:inputMask id="txtDui"  mask="99999999-9" 
                                     value="#{matriculaBean.responsable.vcDui}"/>
                        <p:message for="txtDui" display="icon"/>
                        <h:outputText value="Sexo:" />
                        <h:selectOneRadio id="cboSexo"
                                          value="#{matriculaBean.responsable.vcSexo}"
                                          required="#{param['requireGroup1']=='1'}">
                            <f:selectItem itemLabel="Masculino" itemValue="Masculino"/>
                            <f:selectItem itemLabel="Femenino" itemValue="Femenino"/>
                        </h:selectOneRadio>
                        <p:message for="cboSexo" display="icon"/>
                        <h:outputText value="Tel. Casa:" />
                        <p:inputMask id="txtTelefono" mask="9999-9999" 
                                     value="#{matriculaBean.responsable.vcTelefono}"/>
                        <p:message for="txtTelefono" display="icon"/>

                        <h:outputText value="Dir. Residencia:" />
                        <p:inputTextarea id="txtDireccion"
                                         rows="2"
                                         value="#{matriculaBean.responsable.vcDireccion}"/>                    
                    </h:panelGrid>                       

                    <h:panelGrid columns="3" >                       
                        <h:outputText value="Profesion u Oficio:" />
                        <p:inputText id="txtProfesion"
                                     value="#{matriculaBean.responsable.vcProfesion}"/>
                        <p:message for="txtProfesion" display="icon"/>
                        <h:outputText value="Lugar de Trabajo:" />
                        <p:inputText id="txtLugarTrabResponsable"
                                     value="#{matriculaBean.lugarTrabResponsable.vcNombreLugTrabajo}"/>
                        <p:message for="txtLugarTrabResponsable" display="icon"/>
                        <h:outputText value="Dir. de Trabajo:" />
                        <p:inputTextarea id="txtDirTrabResponsable"
                                         rows="2"
                                         value="#{matriculaBean.lugarTrabResponsable.vcDireccion}"/>
                        <p:message for="txtDirTrabResponsable" display="icon"/>
                        <h:outputText value="Tel. Trabajo:" />
                        <p:inputMask id="txtTelefonoTrab"  mask="9999-9999" 
                                     value="#{matriculaBean.lugarTrabResponsable.vcTelefono}"/>
                        <p:message for="txtTelefonoTrab"/>
                    </h:panelGrid> 
                </h:panelGrid>
            </p:fieldset>
            <p:dataTable id="dtAlumnoMatricula" 
                         widgetVar="dtAlumnoMatricula"                                        
                         var="varAlumnosMatricular" 
                         value="#{matriculaBean.arregloMatriculas}">

                <f:facet name="header">  
                    <h:panelGrid columnClasses="alignLeft,alignLeft,alignLeft" 
                                 id="frmListaAlumnos" 
                                 style="width:500px" 
                                 columns="2">
                        <p:inputText id="txtAlumnoHide" 
                                     style="display: none; ">
                            <f:validator disabled="#{param['requireGroup1'] != '1'}" 
                                         validatorId="matriculaValidator"/>
                        </p:inputText>                        
                        <h:panelGrid columns="2">
                            <p:commandButton value="Agregar Alumno" 
                                             title="Agregar"
                                             type="push" 
                                             immediate="true" 
                                             process="@this"
                                             action="#{matriculaBean.nuevoAlumno()}"
                                             update="frmMatricula frmCompromiso dtCompromisos frmPagos dtPagos frmDebe ingresoMatriculaDialogo ingresoPagosDialogo "
                                             oncomplete="alumnoDialogo.show();"
                                             image="ui-icon ui-icon-circle-plus"/>
                            <p:message for="txtAlumnoHide"/>
                        </h:panelGrid>
                    </h:panelGrid>
                </f:facet>  

                <p:column filterBy="#{varAlumnosMatricular[1].vcNombres}" 
                          filterStyle="display: none" 
                          style="text-align: left;"
                          headerText="Alumno">                                
                    <h:outputText value="#{varAlumnosMatricular[1].vcNombres} #{varAlumnosMatricular[1].vcApellidos}"/>
                </p:column> 

                <p:column filterBy="#{varAlumnosMatricular[0].vcParentResponsable}" 
                          filterStyle="display: none"
                          style="text-align: left;"
                          headerText="Parentesco Responsable">
                    <h:outputText value="#{varAlumnosMatricular[0].vcParentResponsable}"/>
                </p:column> 

                <p:column filterBy="#{varAlumnosMatricular[7]}" 
                          filterStyle="display: none"
                          style="text-align: left;"
                          headerText="Grado A Matricular">
                    <h:outputText value="#{varAlumnosMatricular[7]}"/>
                </p:column>

                <p:column filterBy="#{varAlumnosMatricular[3].boPendientePago==true?'Pendiente':'Pagado'}" 
                          filterStyle="display: none"
                          style="text-align: left;"
                          headerText="Estado de Pago">
                    <h:outputText value="#{varAlumnosMatricular[3].boPendientePago==true?'Pendiente':'Pagado'}"/>
                </p:column> 

                <p:column headerText="Acciones" style="text-align: center; width: 75px;">
                    <p:commandButton  image="ui-icon-pencil" 
                                      title="Modificar Matricula"
                                      action="#{matriculaBean.editMatricula}"
                                      update="dtCompromisos frmMatricula frmPagos frmDebe dtPagos"
                                      oncomplete="alumnoDialogo.show(); confirmFunction(1);"
                                      process="@this">  
                        <f:setPropertyActionListener value="#{varAlumnosMatricular}" target="#{matriculaBean.selectedMatricula}" />
                    </p:commandButton>  
                    <p:commandButton  image="ui-icon-trash"
                                      title="Eliminar Matricula"
                                      action="#{matriculaBean.removeMatricula}" 
                                      update="dtAlumnoMatricula"
                                      oncomplete="confirmFunction(2);"
                                      process="@this">  
                        <f:setPropertyActionListener value="#{varAlumnosMatricular}" target="#{matriculaBean.selectedMatricula}" />
                    </p:commandButton>   
                </p:column> 
            </p:dataTable>
            <h:panelGrid style="width: 100%">
                <p:toolbar>
                    <p:toolbarGroup align="left">      
                        <p:commandButton value="Guardar" 
                                         oncomplete="confirmFunction(4);" 
                                         process="@this frmResponsable dtAlumnoMatricula" 
                                         update="frmResponsable frmListaAlumno dtAlumnoMatricula msg"
                                         title="Guardar"
                                         action="#{matriculaBean.crear}"
                                         image="ui-icon-disk">
                            <f:param name="requireGroup1" value="1"/>
                        </p:commandButton>
                    </p:toolbarGroup>
                </p:toolbar>
            </h:panelGrid>
            <!--/p:layoutUnit-->
            <!--/p:layout-->
        </p:panel>
        <p:outputPanel id="ingresoMatriculaDialogo">
            <p:dialog header="Datos de la matricula" 
                      widgetVar="alumnoDialogo" 
                      minWidth="700" 
                      modal="true"  
                      closable="true" 
                      onHide="confirmFunction(2);"                                                     
                      visible="#{not empty facesContext.maximumSeverity}">

                <p:fieldset legend="Datos de Alumno y Matricula">
                    <h:panelGrid columns="3" id="frmMatricula">
                        <h:outputText value="Buscar Alumno:"/>
                        <p:autoComplete id="txtBuscarAlumno"
                                        value="#{matriculaBean.buscarAlumno}"
                                        selectListener="#{matriculaBean.onSelectNomPadre}" 
                                        onSelectUpdate="frmMatricula" 
                                        required="#{param['requireGroup3']=='1'}"
                                        completeMethod="#{autoCompleteBean.completeNombreAlumno}">
                            <f:attribute name="tipoPersona" value="Alumno"/>
                        </p:autoComplete>
                        <p:message for="txtBuscarAlumno" display="icon"/>

                        <h:outputText value="Fecha de Nacimiento:"/>
                        <p:inputText id="txtFechaNacAlumno"
                                     value="#{matriculaBean.getStringDate(matriculaBean.personaAlumno.daFecNacimiento)}"
                                     readonly="true" />
                        <h:outputText/>

                        <h:outputText value="Con quien vive el Alumno:"/>
                        <h:selectOneMenu id="cboViveAlumno" 
                                         value="#{matriculaBean.matricula.vcVivecon}"
                                         required="#{param['requireGroup3']=='1'}">
                            <f:selectItem itemLabel="Seleccione una Opción" value="#{null}"/>
                            <f:selectItem itemLabel="Madre" itemValue="1" />
                            <f:selectItem itemLabel="Padre" itemValue="2"/>
                            <f:selectItem itemLabel="Ambos" itemValue="3"/>
                            <f:selectItem itemLabel="Responsable" itemValue="4"/>
                        </h:selectOneMenu>
                        <p:message for="cboViveAlumno" display="icon"/>

                        <h:outputText value="Parentesco del Responsable:" />
                        <h:selectOneMenu id="cboParentesco"
                                         value="#{matriculaBean.matricula.vcParentResponsable}"
                                         required="#{param['requireGroup3']=='1'}">
                            <f:selectItem itemLabel="Seleccione una Opción" value="#{null}"/>
                            <f:selectItem itemLabel="Madre" itemValue="Madre" />
                            <f:selectItem itemLabel="Padre" itemValue="Padre"/>
                            <f:selectItem itemLabel="Hermano/a" itemValue="Hermano/a" />
                            <f:selectItem itemLabel="Primo/a" itemValue="Primo/a" />
                            <f:selectItem itemLabel="Tio/a" itemValue="Tio/a" />
                            <f:selectItem itemLabel="Abuelo/a" itemValue="Abuelo/a" />
                            <f:selectItem itemLabel="Madrastra" itemValue="Madrastra" />                                       
                            <f:selectItem itemLabel="Padrastro" itemValue="Padrastro" />    
                            <f:selectItem itemLabel="Otro" itemValue="Otro" />                                       
                        </h:selectOneMenu> 
                        <p:message for="cboParentesco" display="icon"/>

                        <h:outputText value="Conducta:" />
                        <h:selectOneMenu id="cboConducta"
                                         value="#{matriculaBean.matricula.vcConducta}"
                                         required="#{param['requireGroup3']=='1'}">
                            <f:selectItem itemLabel="Seleccione una Opción" value="#{null}"/>
                            <f:selectItem itemLabel="Buena" itemValue="1" />
                            <f:selectItem itemLabel="Muy Buena" itemValue="2" />
                            <f:selectItem itemLabel="Excelente" itemValue="3" />
                        </h:selectOneMenu> 
                        <p:message for="cboConducta" display="icon"/>

                        <h:outputText value="Grado a Matricular:"/>
                        <h:selectOneMenu id="cboGrado"
                                         binding="#{idSeccion}"
                                         value="#{matriculaBean.selectedSeccion}"
                                         required="#{param['requireGroup3']=='1'}">
                            <f:selectItem itemLabel="Seleccione una Opción" value="#{null}"/>
                            <f:selectItems value="#{seccionBean.cargarSecciones()}"/>
                        </h:selectOneMenu>
                        <p:message for="cboGrado" display="icon"/>

                        <h:outputText value="Asignar Recibo:"/>
                        <h:selectBooleanCheckbox id="chkAsignarRecibo" 
                                                 value="#{matriculaBean.asignarRecibo}" 
                                                 onchange="onCheckAsignarRecibo()">
                            <f:validator disabled="#{param['requireGroup3'] != '1'}" 
                                         validatorId="alumnoDuplicadoValidator"/>
                            <f:attribute name="idSeccion" 
                                         value="#{idSeccion.value}"/>
                            <f:validator disabled="#{param['requireGroup3'] != '1'}" 
                                         validatorId="pagosValidator"/>                                   
                            <f:attribute name="bean" 
                                         value="matriculaBean" />
                        </h:selectBooleanCheckbox>
                        <p:message for="chkAsignarRecibo"/>
                        <p:outputPanel id="lblRecibo">
                            <h:outputText rendered="#{matriculaBean.boMostrarRecibo}" value="Número de Recibo:" />
                        </p:outputPanel>
                        <p:outputPanel id="txtRecibo">
                            <p:spinner id="txtNumRecibo"
                                       min="1" max="999999999" stepFactor="1"
                                       rendered="#{matriculaBean.boMostrarRecibo}"
                                       value="#{matriculaBean.recibo.nuNumRecibo}"
                                       required="#{param['requireGroup3']=='1'}">
                            </p:spinner>
                        </p:outputPanel>
                        <p:outputPanel id="msgRecibo">
                            <p:message for="txtNumRecibo" display="icon"
                                       rendered="#{matriculaBean.boMostrarRecibo}" />
                        </p:outputPanel>
                    </h:panelGrid>
                </p:fieldset>

                <p:fieldset legend="Compromisos">
                    <h:panelGrid columns="4" id="frmCompromisos" >
                        <h:outputText value="Compromiso:"/>
                        <p:inputText id="txtCompromiso"
                                     value="#{matriculaBean.compromiso.vcCompromiso}"
                                     required="#{param['requireGroup2'] == '1'}"/>
                        <p:commandLink value="Agregar"
                                       action="#{matriculaBean.addCompromiso}"
                                       process="@this frmCompromisos"
                                       update="frmCompromisos dtCompromisos">
                            <f:param name="requireGroup2" value="1"/>
                        </p:commandLink>
                        <p:message for="txtCompromiso" display="icon" />
                    </h:panelGrid>

                    <p:dataTable id="dtCompromisos" 
                                 widgetVar="dtCompromisos"                                        
                                 var="varCompromisos" 
                                 value="#{matriculaBean.compromisos}">

                        <p:column headerText="Compromiso"
                                  style="text-align: left;" >
                            <h:outputText value="#{varCompromisos.vcCompromiso}"/>
                        </p:column>

                        <p:column style="width: 75px; text-align: center"
                                  headerText="Acción" >  
                            <f:facet name="header"/>
                            <p:commandButton  image="ui-icon-trash"
                                              title="Eliminar Compromiso"
                                              action="#{matriculaBean.removeCompromiso}"
                                              oncomplete="confirmFunction(0);"
                                              update="frmCompromisos dtCompromisos"
                                              process="@this"> 
                                <f:setPropertyActionListener target="#{matriculaBean.selectedCompromiso}"
                                                             value="#{varCompromisos}"/>
                            </p:commandButton>
                        </p:column>
                    </p:dataTable>
                </p:fieldset>

                <h:panelGrid  columns="2">
                    <p:commandButton id="cmdCobros"
                                     image="ui-icon ui-icon-cart" 
                                     value="Agregar Cobros"
                                     type="push" 
                                     immediate="true" 
                                     oncomplete="pagosDialogo.show()"
                                     process="@this" 
                                     action="#{matriculaBean.vaciarPagos}" 
                                     update="ingresoPagosDialogo frmPagos dtPagos frmDebe"/>                      
                    <p:commandButton id="cmdAceptarAlumno"
                                     value="Aceptar" 
                                     image="ui-icon ui-icon-circle-check" 
                                     action="#{matriculaBean.addMatricula}"
                                     process="@this frmMatricula frmCompromisos frmDebe frmPagos" 
                                     update="frmMatricula frmCompromisos dtCompromisos ingresoMatriculaDialogo dtAlumnoMatricula" >
                        <f:param name="requireGroup3" value="1"/>
                    </p:commandButton>                      
                </h:panelGrid>
            </p:dialog>
        </p:outputPanel>

        <p:outputPanel id="ingresoPagosDialogo">
            <p:dialog header="Pagos" 
                      widgetVar="pagosDialogo" 
                      minWidth="750" 
                      modal="true" 
                      visible="#{not empty facesContext.maximumSeverity}">
                <p:fieldset>
                    <h:panelGrid columns="4" id="frmPagos" >
                        <h:outputText value="Concepto:"/>
                        <h:selectOneMenu id="cboConcepto" 
                                         onchange="onChangeConcepto()"
                                         value="#{matriculaBean.selectedConcepto}"
                                         required="#{param['requireGroup4'] == '1'}">
                            <f:selectItem itemLabel="-Seleccione una Opción-" value="#{null}"/>
                            <f:selectItems value="#{matriculaBean.cargarConceptos()}"/>
                        </h:selectOneMenu>
                        <p:message for="cboConcepto" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Cantidad:"/>
                        <p:spinner id="txtCantidad" 
                                   style="width: 50px;" min="1" max="999"
                                   value="#{matriculaBean.detalleRecibo.nuCantidad}"/>
                        <p:message for="txtCantidad" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Valor:"/>
                        <p:spinner id="txtValor" 
                                   style="width: 50px;" 
                                   min="0" max="99999"
                                   value="#{matriculaBean.detalleRecibo.nuPrecio}"/>
                        <p:message for="txtValor" display="icon"/>
                        <h:outputText/>

                        <h:outputText value="Ocultar:"/>
                        <h:selectBooleanCheckbox id="chkEstado"
                                                 value="#{matriculaBean.detalleRecibo.boOculto}">
                        </h:selectBooleanCheckbox>
                        <p:commandLink id="cmdAddDetalle"
                                       value="Agregar" 
                                       rendered="#{matriculaBean.showAddDetalle}"
                                       action="#{matriculaBean.addDetallesRecibo}"
                                       process="@this frmPagos"
                                       update="frmPagos dtPagos frmDebe">
                            <f:param name="requireGroup4" value="1"/>
                        </p:commandLink>
                        <p:message for="txtPagoHide"/>
                        <p:inputText id="txtPagoHide" 
                                     style="display: none; ">
                            <f:validator disabled="#{param['requireGroup5'] != '1'}" 
                                         validatorId="pagosValidator"/>
                            <f:attribute name="bean" value="matriculaBean" />
                        </p:inputText>
                    </h:panelGrid>

                    <p:dataTable id="dtPagos" 
                                 widgetVar="dtPagos"                                        
                                 var="varPagos"
                                 value="#{matriculaBean.arregloDetalles}">

                        <p:column headerText="Cantidad"
                                  style="text-align: center;
                                  width: 15px" >
                            <h:outputText value="#{varPagos[1].nuCantidad}"/>
                        </p:column>

                        <p:column headerText="Concepto"
                                  style="text-align: left;" >
                            <h:outputText value="#{varPagos[0]}"/>
                        </p:column>

                        <p:column headerText="Valor"
                                  style="text-align: right;
                                  width: 15px;" >
                            <h:outputText value="#{varPagos[1].nuPrecio}"/>
                        </p:column>

                        <p:column headerText="Estado"
                                  style="text-align: center;
                                  width: 15px;" >
                            <h:outputText value="#{varPagos[1].boOculto==true?'Oculto':'Visible'}"/>
                        </p:column>

                        <p:column style="width: 25px; text-align: center"
                                  headerText="Acción" >  
                            <f:facet name="header"/>
                            <p:commandButton  image="ui-icon-trash"
                                              title="Eliminar Concepto"
                                              action="#{matriculaBean.removeDetalles}"
                                              oncomplete="confirmFunction(3);"
                                              update="frmPagos dtPagos frmDebe"
                                              process="@this"> 
                                <f:setPropertyActionListener target="#{matriculaBean.selectedPago}"
                                                             value="#{varPagos}"/>
                            </p:commandButton>
                        </p:column>
                    </p:dataTable>

                    <h:panelGrid columns="4" 
                                 id="frmDebe">
                        <h:outputText value="Total: $ #{matriculaBean.totalPagar} .::. "/>
                        <h:outputText value="Debe:"/>
                        <p:spinner id="txtDebe" 
                                   style="width: 60px;" 
                                   min="0"  max="999" stepFactor="0.01"
                                   value="#{matriculaBean.recibo.nuCantidadDeuda}" />                               
                    </h:panelGrid>
                    <h:panelGrid style="text-align:right" >
                        <p:commandButton id="cmdAceptarPago"
                                         value="Aceptar" 
                                         image="ui-icon ui-icon-circle-check" 
                                         action="#{matriculaBean.addPago}"
                                         process="@this frmPagos dtPagos frmDebe" 
                                         update="frmPagos dtPagos frmDebe ingresoPagosDialogo">
                            <f:param name="requireGroup5" value="1"/>
                        </p:commandButton> 
                    </h:panelGrid>

                </p:fieldset>
            </p:dialog>
        </p:outputPanel>
        <p:remoteCommand name="onChangeConcepto" process="@this cboConcepto frmPagos" 
                         update="frmPagos dtPagos frmDebe" action="#{matriculaBean.onChangeConcepto}"/>
        <p:remoteCommand name="onCheckAsignarRecibo" process="@this chkAsignarRecibo" 
                         update="lblRecibo txtRecibo msgRecibo" action="#{matriculaBean.onCheckAsignarRecibo}"/>
        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmMatricula"
                         update="dtAlumnoMatricula"/>
        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmModificarMatricula"
                         update="frmMatricula dtCompromisos"/>
        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmCompromisos"
                         update="frmCompromisos dtCompromisos"/>
        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmPagos"
                         update="frmPagos dtPagos frmDebe"/>
        <p:commandButton style="visibility: hidden" 
                         widgetVar="updateConfirmGuardar"
                         update="msg"/>
    </ui:define>
</ui:composition>
